#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char *receiving(int sockfd){
	int code, sizePacket;
	if ((sizePacket = recv(sockfd, &code, sizeof(int), 0)) == 0){
		exitNow("Соединение было разоравно (code).");
	}

	int size;
	if ((sizePacket = recv(sockfd, &size, sizeof(int), 0)) == 0){
		exitNow("Соединение было разоравно (size).");
	}
	if (size > 256){
		size = 256;
	}

	if(size != 0){
		char *receiveMessage = calloc(size, sizeof(char) + 1); // Массив под сообщение.
		if ((sizePacket = recv(sockfd, (char *) receiveMessage, size, 0)) == 0){
			exitNow("Соединение было разоравно (receiveMessage).");
		}
		receiveMessage[size] = '\0';
			//printf("%s\n", receiveMessage);
		return receiveMessage;
	}
	return NULL;
}

void sending(int sockfd, int code, char msg[]){
	int size;
	char *sendMessage;
	if(msg == NULL){
		size = 0;
	}
	else{
		size = strlen(msg);
		if (size > 256){ // Обрезаем сообщение.
			size = 256;
		}
		sendMessage = calloc(size, sizeof(char) + 1);
		strncpy(sendMessage, msg, size);
		sendMessage[size] = '\0';
	}
	
	int sizePacket;
	if((sizePacket = send(sockfd, &code, sizeof(int), 0)) == -1){
		exitNow("Ошибка при отправке сообщения (code).");
	}
   	if((sizePacket = send(sockfd, &size, sizeof(int), 0)) == -1){
		exitNow("Ошибка при отправке сообщения (size).");
	}
	if(msg != NULL){
		if((sizePacket = send(sockfd, (char *) sendMessage, size, 0)) == -1){
			exitNow("Ошибка при отправке сообщения (sendMessage).");
			printf("%s\n", sendMessage);
		}
	}
}
